package com.harry.hr.entity.system;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;


public class Menu implements java.io.Serializable,Comparable<Menu>  {
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	public Menu(){}
	public Menu(int menuId){
		this.menuId = menuId;
	}
	/**
	 * 菜单编号
	 */
	private int menuId;
	/**
	 * 上级菜单编号
	 */
	private int menuUpId;
	/**
	 * 菜单标题
	 */
	private String menuTitle;
	/**
	 * 菜单路径
	 */
	private String menuSrc;
	/**
	 * 菜单排序
	 */
	private int menuOrder;
	/**
	 * 菜单状态
	 */
	private boolean menuStatus;
	/**
	 * 菜单备注
	 */
	private String menuRemark;
	/**
	 * 菜单图标
	 */
	private int menuPic;
	/**
	 * 有权限的用户
	 */
	private Set<Role> roles = new HashSet<Role>();
	/**
	 * 子级菜单
	 */
	private List<Menu> children = new ArrayList<Menu>();
	/**
	 * 获取菜单编号
	 * @return 菜单编号
	 */
	public int getMenuId() {
		return menuId;
	}
	/**
	 * 设置菜单编号
	 * @param menuId 菜单编号
	 */
	public void setMenuId(int menuId) {
		this.menuId = menuId;
	}
	/**
	 * 获取上级菜单编号
	 * @return
	 */
	public int getMenuUpId() {
		return menuUpId;
	}
	/**
	 * 设置上级菜单编号
	 * @param menuUpId
	 */
	public void setMenuUpId(int menuUpId) {
		this.menuUpId = menuUpId;
	}
	/**
	 * 获取菜单标题
	 * @return 菜单标题
	 */
	public String getMenuTitle() {
		return menuTitle;
	}
	/**
	 * 设置菜单标题
	 * @param menuTitle 菜单标题
	 */
	public void setMenuTitle(String menuTitle) {
		this.menuTitle = menuTitle;
	}
	/**
	 * 获取菜单路径
	 * @return 菜单路径
	 */
	public String getMenuSrc() {
		return menuSrc;
	}
	/**
	 * 设置菜单路径
	 * @param menuSrc 菜单路径
	 */
	public void setMenuSrc(String menuSrc) {
		this.menuSrc = menuSrc;
	}
	/**
	 * 获取菜单排序字段
	 * @return 菜单排序字段
	 */
	public int getMenuOrder() {
		return menuOrder;
	}
	/**
	 * 设置菜单排序字段
	 * @param menuOrder 菜单排序字段
	 */
	public void setMenuOrder(int menuOrder) {
		this.menuOrder = menuOrder;
	}
	/**
	 * 获取菜单状态
	 * @return 菜单状态
	 */
	public boolean getMenuStatus() {
		return menuStatus;
	}
	/**
	 * 设置菜单状态
	 * @param menuStatus 菜单状态
	 */
	public void setMenuStatus(boolean menuStatus) {
		this.menuStatus = menuStatus;
	}
	/**
	 * 获取菜单备注
	 * @return 菜单备注
	 */
	public String getMenuRemark() {
		return menuRemark;
	}
	/**
	 * 设置菜单备注
	 * @param menuRemark 菜单备注
	 */
	public void setMenuRemark(String menuRemark) {
		this.menuRemark = menuRemark;
	}
	/**
	 * 获取菜单图标
	 * @return 菜单图标
	 */
	public int getMenuPic() {
		return menuPic;
	}
	/**
	 * 设置菜单图标
	 * @param menuPic 菜单图标
	 */
	public void setMenuPic(int menuPic) {
		this.menuPic = menuPic;
	}
	/**
	 * 获取有权限的角色
	 * @return 角色
	 */
	public Set<Role> getRoles() {
		return roles;
	}
	/**
	 * 设置有权限的角色
	 * @param users 角色
	 */
	public void setRoles(Set<Role> roles) {
		this.roles = roles;
	}
	/**
	 * 获取子级菜单
	 * @return 子级菜单
	 */
	public List<Menu> getChildren() {
		return children;
	}
	/**
	 * 设置子级菜单
	 * @param children 子级菜单
	 */
	public void setChildren(List<Menu> children) {
		this.children = children;
	}
	@Override
	public String toString(){
		return "{["+this.menuId+"],["+this.menuTitle+"],["+this.menuUpId+"],["+this.menuSrc+"],["+this.menuRemark+"],["+this.menuOrder+"],["+this.menuPic+"]}";
	}
	/**
	 * 重写比较器
	 */
	public int compareTo(Menu menu) {
		return menu.getMenuOrder()-this.menuOrder;
	}


}
